package cn.com.surker.material.service;

import cn.com.surker.material.entity.MainMaterial;
import cn.com.surker.oa.entity.OaMaterial;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * @Author lucky
 * @create 2024年07月04 7:26
 * @desc
 */
public interface MainMaterialService {

    /**
     * 查询所有
     * @return
     */
    List<OaMaterial> findAll();

    /**
     * 查询仓位关联材料
     * @return
     */
    List<OaMaterial> findByStorage(Long orgId);
    /**
     * 查询公司关联材料
     * @return
     */
    List<OaMaterial> findByOrg(Long orgId);

    /**
     * 分页查询材料信息
     * @param searchVal 检索条件
     * @param status 是否启用
     * @param type 材料大类枚举 SysMaterialTypeEnum
     * @param materialId 材料父级ID
     * @param isDisPlay 过磅显示0显示1隐藏
     * @param storeType 仓位类型(0:无1:筒仓2:堆场)
     * @param offset
     * @param limit
     * @return
     */
    IPage findPage(String searchVal, Integer status, Integer type, Long orgId, Long materialId, Integer isDisPlay,
                   Integer storeType, Integer offset, Integer limit);

    /**
     * 新增材料信息
     * @param materialId 材料ID
     * @param orgId 公司ID
     * @param name 材料名称
     * @param norms 规格
     * @param nameNorms 名称规格
     * @param parentId 父级ID
     * @param storeType 仓位类型(0:无1:筒仓2:堆场)
     * @param remark
     * @param creater
     * @return
     */
    Integer save(Long materialId, Long orgId,String name, String norms, String nameNorms, Long parentId,
                 Integer storeType, String remark, Integer isDisplay, String creater, String code,
                 Integer type, Integer breedType, Integer weightBillType);

    /**
     * 修改材料信息
     * @param id
     * @param materialId 材料ID
     * @param orgId 公司ID
     * @param name 材料名称
     * @param norms 规格
     * @param nameNorms 名称规格
     * @param parentId 父级ID
     * @param storeType 仓位类型(0:无1:筒仓2:堆场)
     * @param remark
     * @param updator
     * @return
     */
    Integer update(Long id, Long materialId, Long orgId,String name, String norms, String nameNorms, Long parentId,
                   Integer storeType, String remark, Integer isDisplay, String updator, String code, Integer type,
                    Integer breedType, Integer weightBillType, Integer isAdmin);

    /**
     * 修改状态信息
     * @param id
     * @param status
     * @return
     */
    Integer updateStatus(Long id, Integer status);

    /**
     * 根据公司标识获取材料信息
     * @param orgId
     * @return
     */
    List<MainMaterial> getListMaterialByOrgId(Long orgId);

    /**
     * 根据供应商ID标识获取材料信息
     * @param supplerId
     * @return
     */
    List<MainMaterial> findSupplierMaterial(Long orgId, Long supplerId);

}
